//
//  FooTableViewController.m
//  babyMemoryPro
//
//  Created by student on 15-6-24.
//  Copyright (c) 2015年 niit. All rights reserved.
//

#import "FooTableViewController.h"
#import "MJRefresh.h"
#import "TFHpple.h"
#import "FoodCell.h"
#import "UIImageView+WebCache.h"
#import "AFHTTPRequestOperationManager.h"
#import "UITableViewController+Refresh.h"
#import "RefreshBar.h"
#import "FoodDetailViewController.h"
#import "Model.h"
@interface FooTableViewController ()<UITableViewDataSource,UITableViewDelegate>{
    MJRefreshHeaderView *_headView;
    MJRefreshFooterView *_footView;
    NSArray *allList;
}
@end

@implementation FooTableViewController
-(NSMutableArray *)list{
    if (!_list) {
        _list=[[NSMutableArray alloc]init];
    }
    return _list;
    
}
-(NSMutableArray *)imgList{
    if (!_imgList) {
        _imgList=[[NSMutableArray alloc]init];
    }
    return _imgList;
    
}
-(NSMutableArray *)urlList{
    if (!_urlList) {
        _urlList=[[NSMutableArray alloc]init];
    }
    return _urlList;
    
}
-(NSMutableArray *)list2{
    if (!_list2) {
        _list2=[[NSMutableArray alloc]init];
    }
    return _list2;
    
}
- (void)viewDidLoad {
    [super viewDidLoad];
    _footView=[self addFooter];
    allList=[Model foodList];
    self.title = @"营养食谱";
     self.tableView.separatorStyle=UITableViewCellAccessoryNone;
    
    self.content=@[@"这道米饭非常精致漂亮，形似草莓的造型一定会吸引宝宝视线，一口一个宝宝吃起来也是十分的方便",@"这道粥品造型十分别致，而且西兰花等富含维生素C，不仅有利于宝宝的生长发育，而且还可以提高宝宝的免疫力",@"这是一道十足的健康主食，煮烂的燕麦非常利于宝宝吸收，再加上养胃的小米，可以给宝宝一满碗的美味与营养哦",@"菠菜是有名的补铁食物，1-3岁的宝宝已经要开始从食物中获取充足的铁元素，做成粥品则可以更加利于宝宝的消化吸收",@"这道面从颜色上来说十分的开胃，宝宝们正是喜欢绚丽颜色的时候，具有南瓜颜色与味道的面条会很受欢迎哦",@"这道面食材丰富，猪肝和菠菜是补铁的好食材，胡萝卜富含胡萝卜素，混在一起吃味道十分鲜美，同时也不用担心宝宝挑食哦",@"这道菠菜面从造型上来说，非常的精巧好看，不仅能从味觉上征服宝宝，营养也一定不会落下的",@"这款菊花样的馒头一定会吸引宝宝的目光，别具匠心的妈妈用南瓜汁和面，不仅增加了营养，颜色也变得十分的漂亮了",@"油麦菜做成馅包进包子里，不仅保存了油麦菜的维生素，而且还让包子鲜嫩多汁，一定会让宝宝们爱上吃饭的",@"这道菜十分的鲜美，虾仁的肉质十分嫩，和鸡蛋一起蒸，二者都是补钙的食材，一定会让宝宝营养美味双丰收",@"这道菜是一位妈妈为不爱吃西兰花的宝宝特别研究出来的菜品，对于有同样苦恼的妈妈们是一个解决的好方法哦",@"这道菜品不仅从造型上十分的别致可爱，不仅可以满足宝宝好奇的心理，同时还可以获得鹌鹑蛋的营养哦",@"鲈鱼富含优质蛋白质，并且含有丰富的钙质，肉质鲜嫩而且其所含的鱼刺非常少，是十分适合宝宝吃的鱼类品种",@"1-3岁的宝宝可以吃一些细碎的肉饼补充蛋白质，这道蒸肉饼里加了一点香菇碎，更增加了香味和口感",@"猪肝是补铁的好食材，对于1-3岁的宝宝们来说，妈妈们可以经常做成汤给宝宝吃，不仅营养，也非常利于消化吸收",@"1-3岁的宝宝最适合的就是鸡蛋羹了，鸡蛋富含优质蛋白以及钙质，再加上一点点的橙香味，宝宝一定会非常喜欢",@"这道菜是一道十分简单的菜，但是其富含的营养与美味的程度以及松软的口感一定可以让挑食的宝宝也会爱上的",@"这道菜品中间加了一点点的白菜帮，细细的白菜可以减少肉饼的油腻感，而且营养也更加丰富",@"这道汤品颜色十分漂亮，绿绿的豌豆粒让人食欲大增，与豆腐搭配还可以补充优质蛋白，一定会受宝宝们欢迎",@"这道菜品让人看着就十分有食欲，嫩嫩的豆腐加上酸甜的番茄，再配上一些松子，酸酸甜甜的宝宝很喜欢",@"香蕉加上豆腐一定是宝宝们从未看过的菜式，新奇又美味的口感一定可以征服宝宝们的味蕾，同时还可以为宝宝们补充丰富的钙质",@"西红柿与鸡蛋的组合会变成十分开胃的菜品，偶尔做给宝宝不仅可以促进食欲，还可以为宝宝补充一些维生素",@"单炒一份白菜苔宝宝一定不会喜欢吃，但是加上一点火腿口感就会发生很大的变化，这样的做法相信宝宝们也会轻松接受蔬菜的",@"这道菜比较清淡，有一点淡淡的奶香，富含丰富的钙质，可以让宝宝在享受美味的同时，还可以得到充足的钙质",@"土豆是富含多种维生素与矿物质的优质食材，其维生素C含量尤其丰富，而且土豆只要简单的做法就会十分美味呢",@"很多的宝宝都不是很喜欢吃青菜，不是讨厌它的味道就是不好咀嚼，妈妈们可以很用心的改变做法与造型让宝宝爱上吃青菜",@"这道菜是十分独特的做法，土豆做成泥与黄瓜搅拌在一起，减少了土豆泥腻腻的感觉，增加了黄瓜的清爽",@"夏天的时候宝宝最爱的零食大概就是冰淇淋了，但是从外面买总是会让妈妈们担心，这款不仅从口味还是品相都会让宝宝非常喜欢的",@"这款汤圆造型十分漂亮别致，只要花一点小心思就可以让普通的菜品大变身，做给宝宝吃一定会让宝宝十分喜欢的",@"不仅从原材料上还是做法上，饼干都是十分适合宝宝们食用的，淡淡的红茶香和甜甜的葡萄干，宝宝们一定会吃的十分开心",@"熊猫造型可爱，对于宝宝们来说，不仅可以拿来吃，拿来玩估计都是没有问题的，妈妈们可是十分的别具匠心呢",@"这款饼干十分健康，因为没有油，宝宝们也不会感觉十分的腻，不过妈妈们还是要注意把握量哦",@"布丁软软的口感是宝宝们的大爱，加上一点芒果，味道会变得更香甜，自家做的可以保证宝宝的营养与食材的新鲜呢",@"这款酸奶不仅美味而且食材非常丰富，颜色非常漂亮，而且妈妈们亲手做的不仅健康宝宝吃的也会非常开心",@"这个苹果蝴蝶的造型十分的漂亮，对于不爱吃水果的宝宝，将苹果换一个造型，也可以满足宝宝的好奇心",@"这款冰淇淋含有十分丰富的原材料，香蕉和核桃的营养十分丰富，做为宝宝们的零食，不仅美味，还能为宝宝补充营养哦"];
    NSURL *urlStr1=[NSURL URLWithString:@"http://www.haodou.com/topic/baobaoshipu"];
    NSURLRequest *requset1=[NSURLRequest requestWithURL:urlStr1];
    NSOperationQueue *queue1=[[NSOperationQueue alloc] init];
    [NSURLConnection sendAsynchronousRequest:requset1
                                       queue:queue1
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
     {  TFHpple *hpple=[TFHpple hppleWithHTMLData:data];
         NSString *xpathStr=@"//li/a/img";
         NSArray *arr1=[hpple searchWithXPathQuery:xpathStr];
         for(TFHppleElement *tmp in arr1)
         {
             NSDictionary *dict=[tmp attributes];
             [self.list addObject:dict[@"alt"]];
             [self.imgList addObject:dict[@"src"]];
             
             
         }
         NSString *xpathStr1=@"//ul/li/a";
         NSArray *arr2=[hpple searchWithXPathQuery:xpathStr1];
         for(TFHppleElement *tmp in arr2)
         {
             NSDictionary *dict = tmp.attributes;
             [self.urlList addObject:dict[@"href"]];
         }
         for (int i=0; i<self.urlList.count-17; i++) {
             [self.list2 addObject:self.urlList[i]];
         }
         
         dispatch_async(dispatch_get_main_queue(), ^{
             [self.tableView reloadData];
         });
     }];
    
    NSLog(@"%@",self.urlList);
    
    
    [self.tableViewList registerNib:[UINib nibWithNibName:@"FoodCell" bundle:nil] forCellReuseIdentifier:@"FoodCell"];
    
}
-(void)beginRefresh{
    /*
     Objective-C 是基于引用计数(retainCount)来做内存管理，ClassA 用到 ClassB 的时候，通过 alloc/retain/copy 等将 objectB.retainCount+1，不需要的时候通过 release/autorelease 将 objectB.retainCount-1. retainCount 归零后对象 objectB 被释放。假如 objectA retain objectB，objectB 反过来也 retain objectA，结果就是两者 retainCount 都无法归零，也就没办法被释放，造成内存泄露。这就是 Retain Cycle。
     */
    
    __weak FooTableViewController *vc=self;
    //当用户开始往下拉tableview的时候，会调用此block刷新数据
    //    _headView.beginRefreshingBlock=^(MJRefreshBaseView *refreshView){
    //        [vc resertData];
    //    };
    //    _headView.endStateChangeBlock = ^(MJRefreshBaseView *refreshView) {
    //        // 刷新完毕就会回调这个Block
    //    };
    //    _headView.refreshStateChangeBlock = ^(MJRefreshBaseView *refreshView, MJRefreshState state) {
    //    };
    //当用户开始往上拉tableview的时候，会调用此block加载数据
    _footView.beginRefreshingBlock=^(MJRefreshBaseView *refreshView){
        [vc addNewData];
    };
}
-(void)addNewData{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
        [_footView endRefreshing];
        
    });
    
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    
    // Return the number of rows in the section.
    return  self.imgList.count-3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    FoodCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FoodCell"];
    UIImageView *imgView=(UIImageView *)[cell viewWithTag:100];
    
    NSString *urlPic=[self.imgList[indexPath.row] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url=[NSURL URLWithString:urlPic];
    SDWebImageOptions options=SDWebImageRetryFailed|SDWebImageLowPriority;
    [imgView sd_setImageWithURL:url placeholderImage:nil options:options progress:^(NSInteger receivedSize, NSInteger expectedSize) {
        NSLog(@"下载进度:%f",(double)receivedSize/expectedSize);
    } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        NSLog(@"图片加载完毕:%@",image);
    }];
    cell.titleLable.text = self.list[indexPath.row];
    cell.content.text=self.content[indexPath.row];

    return cell;
}
- ( void )dealloc
{
    
    [ _footView free ];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//    NextViewController *nextVC = [NextViewController new];
//    nextVC.title=self.list[indexPath.row];
//    nextVC.textContent.text=self.list[indexPath.row];
//    [self.navigationController pushViewController:nextVC animated:YES];
    FoodDetailViewController *vc=[[FoodDetailViewController alloc]init];
    vc.title=self.list[indexPath.row];
//    vc.url=self.list2[indexPath.row];
    vc.urlPic=self.imgList[indexPath.row];
    Model *model=allList[indexPath.row];
    vc.icon1=model.icon1;
    vc.icon2=model.icon2;
    vc.icon3=model.icon3;
    vc.icon4=model.icon4;
    vc.icon5=model.icon5;
    vc.icon6=model.icon6;
    [self.navigationController pushViewController:vc animated:YES];
}
@end
